Syntax directed means for each type, there’s only rule that can introduce it. E.g. the only way to introduce the plus
syntax is using the PLUS
rule.
We call these inversion lemmata:
%%🖋 Edit in Excalidraw%%
Can be proven by (but doesn’t need to proven in exam):
Adding unrelated variables to the environment should not affect typing. Holds for most programming languages.
If you end up with two different environments, you can use weakening.
Substitution is a [[meta-theoretic operation]]. %%🖋 Edit in Excalidraw%%
We assume that everything has been alpha renamed already so this doesn’t happen. Basically we just assume this won’t be a problem.
To ensure substitution plays nicely with our language: %%🖋 Edit in Excalidraw%%